'''
This file is part of ModeliMark.

ModeliMark is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.

ModeliMark is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with ModeliMark.
If not, see <http://www.gnu.org/licenses/>.

Copyright 2012 Jens Frenkel
'''

class BaseModelGenerator(object):
    '''
    classdocs
    '''


    def __init__(self):
        '''
        Constructor
        '''

    def modelIdentifier(self, modelname):
        '''
        instructs the modelgenerator to generate a
        unique identiefier for each model. This identiefer
        is used in the result file as key collum.

        :unkown modelname: listelement of the list handed over py the benchmarkcomponent
        :return identiefier: unique identiefier of the model as String
        '''

        raise NotImplementedError


    def generateModelSource(self, modelname, dir):
        '''
        instructs the modelgenerator to generate the
        class source file(s)

        :unkown modelname: listelement of the list handed over py the benchmarkcomponent
        :string dir: working directory for the generator
        :return modelname: name of the model as String
        :return files: source files of the model as Strings
        :return workdir: directory where files are stored
        :return libraries: neccessary modelica libraries
        '''

        raise NotImplementedError

